A multi-processor system, such as a multi-processor computer system, increases system performance by symmetric processing. Symmetric processing is a type of multiprocessing in which any function can be executed by any one processor at any time. For example, a computer system can use four processors that simultaneously perform logical operations, creating a system that is much faster than one with a single processor. A multi-processor system using symmetric processing can also increase system reliability, because when one device fails the remaining devices can keep the system running. In addition, a multi-processor system using symmetric processing can reduce waste by alleviating redundancies in having multiple devices performing the same function.
FIG. 1 shows a known symmetric processing computer system. The system includes multiple processors P0, P1, P2 and P3, labeled 100, 101, 102 and 103, respectively, memory interface 105 and basic input/output system (BIOS) interface 106. Processors 100–103 form a cluster 150. As used herein, the term; cluster; is defined a collection up to four processors interconnected on a single processor bus. As shown in FIG. 1, processor bus 104 interconnects processors 100–103. This shared bus may be referred to a Front Side Bus (FSB).
It is preferred to have a small number of processors (typically 4) on a FSB. As is known, to add additional processors on the FSB adds to congestion and may not contribute to additional system performance.
In symmetric processing systems, the processors share the same FSB, memory and BIOS resources. According to known systems, each cluster is independent of one another and requires its own memory, BIOS, FSB and other processing devices within the cluster.
In some multi-processor computer systems, all processors are started, or; booted,; at one time when the system is turned on. Because of the difficulty in writing control code for computer systems that can be simultaneously executed by multiple processors, however, some multi-processor computer systems often employ mechanisms which only allow one processor to be active in each cluster during the booting process while the other processors remain inactive. This active processor is called the bootstrap processor. From the saying “pull yourself up by your bootstraps,” the term boot refers to a computer system's start up procedure.
The bootstrap procedure of a single cluster system does not translate to multi-cluster systems. Since each cluster operates independently of the others each cluster would have its own bootstrap processor. However, it is desirable to have a single bootstrap processor operating for the entire system.
It should be noted that although a multi-processor system was used to illustrate the disadvantages of a bootstrap processor assignment mechanism, other types of multi-device systems and bootstrap processor assignment mechanisms suffer from similar problems.
In view of the foregoing, it can be appreciated that a substantial need exists for a bootstrap processor election mechanism which elects a single bootstrap processor among several clusters of processors that maintains the benefit of increased performance in a symmetric multi-processor computer system, at a reasonable cost, without losing the benefits of increased reliability and reduced operational redundancies.